Phyloseq 1.30.0

## Import packages
library(phyloseq)
library(plotly)
source(file.path(params$libdir, "graphical_methods.R"))
## Alternative to source all extra function from a github repo
# source("https://raw.githubusercontent.com/mahendra-mariadassou/phyloseq-extended/master/load-extra-functions.R")

## Setting variables
  ## The Phyloseq object (format rdata)
  # phyloseq <- ""

  ## The beta diversity distance matrix file
  # distance <- ""

  ## The ordination method you want to use
  ## You can choose between "MDS" (for MDS/PCoA), "NMDS" or "DPCoA"
  # method <- ""

  ## The experiment variable that you want to analyse
  # varExp <- ""

## Create input and parameters dataframe
  # params <- data.frame( "phyloseq" = phylose, "distance" = distance, "method" = method, "varExp" = varExp)

## Load data
  ## the phyloseq object
load(params$phyloseq)

  ## the distance matrix file
A    <- read.table(file=params$distance, row.names=1)
dist <- as.dist(A)

## Add SampleID variable to physeq metadata
sample_data(data)$SampleID <- sample_names(data)

ord  <- ordinate(data, method = params$method, distance = dist)
var  <- get_variable(data, params$varExp)

Ordination plot

## plot(p1)
p1 <- plot_ordination(data, ord, color = params$varExp) + 
                      geom_text(aes(label = SampleID), alpha = 0) + ## add invisible labels
                      theme_bw() + ggtitle(paste(params$method,"")) +
                      theme(plot.title = element_text(hjust = 0.5)) 
ggplotly(p1, tooltip = c("colour", "label"))

## plot(p2)
p2 <- plot_samples(data, ord, color = params$varExp) +
                      geom_text(aes(label = SampleID), alpha = 0) + ## add invisible labels  
                      theme_bw() +
                      ggtitle(paste(params$method,"")) +
                      theme(plot.title = element_text(hjust = 0.5))

ggplotly(p2, tooltip = c("colour", "label"))

## p2 is obtained with plot samples see previously
g <- paste('p22 <- p2 +  stat_ellipse(aes(group =', params$varExp,'))')
eval(parse(text = g))
ggplotly(p22, tooltip = c("colour", "label"))

Heatmap plot

p3 <- plot_heatmap(data, method = params$method, distance = dist) + scale_fill_gradient2(low = "#ffff00", 
                                                mid = "#ffa500",
                                               high = "#ff0000", 
                                           na.value = "white",
                                              trans = log_trans(4), 
                                           midpoint = log(100, base = 4))
e  <- paste('~', params$varExp) 
p3 <- p3 + facet_grid(e, scales = "free_x") +
           theme(plot.title = element_text(hjust = 0.5)) +
           ggtitle(paste("Heatmap plot with", params$varExp))
plot(p3)

LS0tCnRpdGxlOiAiRlJPR1MgUGh5bG9zZXE6IFN0cnVjdHVyZSBWaXN1YWxpemF0aW9uICh2ZXJzaW9uIDMuMikiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazoKICAgIGNvZGVfZm9sZGluZzogaGlkZQpwYXJhbXM6CiAgIHBoeWxvc2VxOgogICAgICB2YWx1ZTogeAogICB2YXJFeHA6CiAgICAgIHZhbHVlOiB4CiAgIG1ldGhvZDoKICAgICAgdmFsdWU6IHgKICAgZGlzdGFuY2U6CiAgICAgIHZhbHVlOiB4CiAgIGxpYmRpcjoKICAgICAgdmFsdWU6IHgKLS0tCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KY29kZS5yeyAvKiBDb2RlIGJsb2NrICovCiAgZm9udC1zaXplOiAxMXB4Owp9CnByZSB7IC8qIENvZGUgYmxvY2sgKi8KICBmb250LXNpemU6IDExcHgKfQouYnV0dG9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyYTdlY2M7IC8qIEJsdWUgKi8KICAgIGJvcmRlciA6IG5vbmU7CiAgICBjb2xvciAgOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDVweCAxMHB4OwogICAgdGV4dC1hbGlnbiA6IGNlbnRlcjsKICAgIHRleHQtZGVjb3JhdGlvbiA6IG5vbmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW46IDRweCAycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7Cn0KaDQgeyAKICAgIGRpc3BsYXkgICA6IGJsb2NrOwogICAgZm9udC1zaXplIDogMWVtOwogICAgbWFyZ2luLXRvcDogMS4zM2VtOwogICAgbWFyZ2luLWJvdHRvbTogMS4zM2VtOwogICAgbWFyZ2luLWxlZnQgIDogMDsKICAgIG1hcmdpbi1yaWdodCA6IDA7CiAgICBmb250LXdlaWdodCAgOiBib2xkOwogICAgY29sb3I6ICMyYTdlY2M7Cn0KPC9zdHlsZT4KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYApQaHlsb3NlcSBgciBwYWNrYWdlVmVyc2lvbigicGh5bG9zZXEiKWAKCmBgYHtyIGltcG9ydCwgbWVzc2FnZT1GQUxTRX0KIyMgSW1wb3J0IHBhY2thZ2VzCmxpYnJhcnkocGh5bG9zZXEpCmxpYnJhcnkocGxvdGx5KQpzb3VyY2UoZmlsZS5wYXRoKHBhcmFtcyRsaWJkaXIsICJncmFwaGljYWxfbWV0aG9kcy5SIikpCiMjIEFsdGVybmF0aXZlIHRvIHNvdXJjZSBhbGwgZXh0cmEgZnVuY3Rpb24gZnJvbSBhIGdpdGh1YiByZXBvCiMgc291cmNlKCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbWFoZW5kcmEtbWFyaWFkYXNzb3UvcGh5bG9zZXEtZXh0ZW5kZWQvbWFzdGVyL2xvYWQtZXh0cmEtZnVuY3Rpb25zLlIiKQoKIyMgU2V0dGluZyB2YXJpYWJsZXMKICAjIyBUaGUgUGh5bG9zZXEgb2JqZWN0IChmb3JtYXQgcmRhdGEpCiAgIyBwaHlsb3NlcSA8LSAiIgoKICAjIyBUaGUgYmV0YSBkaXZlcnNpdHkgZGlzdGFuY2UgbWF0cml4IGZpbGUKICAjIGRpc3RhbmNlIDwtICIiCgogICMjIFRoZSBvcmRpbmF0aW9uIG1ldGhvZCB5b3Ugd2FudCB0byB1c2UKICAjIyBZb3UgY2FuIGNob29zZSBiZXR3ZWVuICJNRFMiIChmb3IgTURTL1BDb0EpLCAiTk1EUyIgb3IgIkRQQ29BIgogICMgbWV0aG9kIDwtICIiCgogICMjIFRoZSBleHBlcmltZW50IHZhcmlhYmxlIHRoYXQgeW91IHdhbnQgdG8gYW5hbHlzZQogICMgdmFyRXhwIDwtICIiCgojIyBDcmVhdGUgaW5wdXQgYW5kIHBhcmFtZXRlcnMgZGF0YWZyYW1lCiAgIyBwYXJhbXMgPC0gZGF0YS5mcmFtZSggInBoeWxvc2VxIiA9IHBoeWxvc2UsICJkaXN0YW5jZSIgPSBkaXN0YW5jZSwgIm1ldGhvZCIgPSBtZXRob2QsICJ2YXJFeHAiID0gdmFyRXhwKQoKIyMgTG9hZCBkYXRhCiAgIyMgdGhlIHBoeWxvc2VxIG9iamVjdApsb2FkKHBhcmFtcyRwaHlsb3NlcSkKCiAgIyMgdGhlIGRpc3RhbmNlIG1hdHJpeCBmaWxlCkEgICAgPC0gcmVhZC50YWJsZShmaWxlPXBhcmFtcyRkaXN0YW5jZSwgcm93Lm5hbWVzPTEpCmRpc3QgPC0gYXMuZGlzdChBKQoKIyMgQWRkIFNhbXBsZUlEIHZhcmlhYmxlIHRvIHBoeXNlcSBtZXRhZGF0YQpzYW1wbGVfZGF0YShkYXRhKSRTYW1wbGVJRCA8LSBzYW1wbGVfbmFtZXMoZGF0YSkKCm9yZCAgPC0gb3JkaW5hdGUoZGF0YSwgbWV0aG9kID0gcGFyYW1zJG1ldGhvZCwgZGlzdGFuY2UgPSBkaXN0KQp2YXIgIDwtIGdldF92YXJpYWJsZShkYXRhLCBwYXJhbXMkdmFyRXhwKQpgYGAKCiMgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CiMjIE9yZGluYXRpb24gcGxvdAoKPGgxIGlkPSJwbG90MSI+CmBgYHtyIG9yZDEsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTZ9CiMjIHBsb3QocDEpCnAxIDwtIHBsb3Rfb3JkaW5hdGlvbihkYXRhLCBvcmQsIGNvbG9yID0gcGFyYW1zJHZhckV4cCkgKyAKICAgICAgICAgICAgICAgICAgICAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBTYW1wbGVJRCksIGFscGhhID0gMCkgKyAjIyBhZGQgaW52aXNpYmxlIGxhYmVscwogICAgICAgICAgICAgICAgICAgICAgdGhlbWVfYncoKSArIGdndGl0bGUocGFzdGUocGFyYW1zJG1ldGhvZCwiIikpICsKICAgICAgICAgICAgICAgICAgICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSAKZ2dwbG90bHkocDEsIHRvb2x0aXAgPSBjKCJjb2xvdXIiLCAibGFiZWwiKSkKYGBgCjwvaDE+Cgo8aDEgaWQ9InBsb3QyIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgpgYGB7ciBvcmQyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD02fQojIyBwbG90KHAyKQpwMiA8LSBwbG90X3NhbXBsZXMoZGF0YSwgb3JkLCBjb2xvciA9IHBhcmFtcyR2YXJFeHApICsKICAgICAgICAgICAgICAgICAgICAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBTYW1wbGVJRCksIGFscGhhID0gMCkgKyAjIyBhZGQgaW52aXNpYmxlIGxhYmVscyAgCiAgICAgICAgICAgICAgICAgICAgICB0aGVtZV9idygpICsKICAgICAgICAgICAgICAgICAgICAgIGdndGl0bGUocGFzdGUocGFyYW1zJG1ldGhvZCwiIikpICsKICAgICAgICAgICAgICAgICAgICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQoKZ2dwbG90bHkocDIsIHRvb2x0aXAgPSBjKCJjb2xvdXIiLCAibGFiZWwiKSkKYGBgCjwvaDE+Cgo8aDEgaWQ9InBsb3QyMiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KYGBge3Igb3JkMjIsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTYsIHdhcm5pbmc9RkFMU0V9CiMjIHAyIGlzIG9idGFpbmVkIHdpdGggcGxvdCBzYW1wbGVzIHNlZSBwcmV2aW91c2x5CmcgPC0gcGFzdGUoJ3AyMiA8LSBwMiArICBzdGF0X2VsbGlwc2UoYWVzKGdyb3VwID0nLCBwYXJhbXMkdmFyRXhwLCcpKScpCmV2YWwocGFyc2UodGV4dCA9IGcpKQpnZ3Bsb3RseShwMjIsIHRvb2x0aXAgPSBjKCJjb2xvdXIiLCAibGFiZWwiKSkKYGBgCjwvaDE+Cgo8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbG90MScpLnN0eWxlLmRpc3BsYXk9JycgOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxvdDInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bsb3QyMicpLnN0eWxlLmRpc3BsYXk9J25vbmUnICI+V2l0aG91dCB2YXJpYWJsZSBuYW1lczwvYnV0dG9uPgo8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbG90MicpLnN0eWxlLmRpc3BsYXk9JycgOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGxvdDEnKS5zdHlsZS5kaXNwbGF5PSdub25lJzsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bsb3QyMicpLnN0eWxlLmRpc3BsYXk9J25vbmUnICI+V2l0aCB2YXJpYWJsZSBuYW1lczwvYnV0dG9uPgo8YnV0dG9uIGNsYXNzPSJidXR0b24iIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbG90MjInKS5zdHlsZS5kaXNwbGF5PScnIDsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bsb3QyJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbG90MScpLnN0eWxlLmRpc3BsYXk9J25vbmUnIj5XaXRoIGVsbGlwc2VzPC9idXR0b24+CgojIyBIZWF0bWFwIHBsb3QKYGBge3IgaGVhdG1hcCwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9NyxtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpwMyA8LSBwbG90X2hlYXRtYXAoZGF0YSwgbWV0aG9kID0gcGFyYW1zJG1ldGhvZCwgZGlzdGFuY2UgPSBkaXN0KSArIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKGxvdyA9ICIjZmZmZjAwIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9ICIjZmZhNTAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdoID0gIiNmZjAwMDAiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hLnZhbHVlID0gIndoaXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zID0gbG9nX3RyYW5zKDQpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZHBvaW50ID0gbG9nKDEwMCwgYmFzZSA9IDQpKQplICA8LSBwYXN0ZSgnficsIHBhcmFtcyR2YXJFeHApIApwMyA8LSBwMyArIGZhY2V0X2dyaWQoZSwgc2NhbGVzID0gImZyZWVfeCIpICsKICAgICAgICAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkgKwogICAgICAgICAgIGdndGl0bGUocGFzdGUoIkhlYXRtYXAgcGxvdCB3aXRoIiwgcGFyYW1zJHZhckV4cCkpCnBsb3QocDMpCmBgYAo=